namespace Brjnk.Maps
{
    using System;
    using System.Collections.Generic;
    using System.Windows;

    /// <summary>
    /// </summary>
    public abstract class WebMapSource : IMapSource
    {
        public abstract IMapProjection Projection { get; }

        public abstract string SourceName { get; }

        public abstract string UniqueName { get; }

        public abstract IEnumerable<ZoomLevel> ZoomLevels { get; }

        public abstract Size TileDIPSize { get; }

        public abstract Point GetTileCoordinates(Point internalPoint, int zoomLevel);

        public abstract Uri GetTileUrl(TileId tile);

        public abstract bool IsTileAvailable(TileId tile);

        public abstract int OptimalZoomLevel { get; }

        public abstract int BigZoomLevel { get; }
    }
}